1. Field of the Invention
The present invention relates to data communications and, more particularly, to managing download of progressive data for timed video and/or audio streams.
2. Description of the Related Art
Video streaming has become more and more popular. In video streaming, a client machine (such as a desktop or laptop computer or a Web-enabled mobile phone) receives a video stream from a video source over a network connection. Several communication protocol are developed and standardized in order to enable video transfer between video source and client machine, for example RTSP, RTMP, HTTP progressive download, MMS and custom protocols. Among these progressive download streaming of videos has become very popular. In progressive download, reproduction or playback of the video is started as a file download using HTTP protocol from the client end. As the chunks of video are downloaded the video playback is started after receiving a few seconds of video data without waiting until the entire video has been received. The remaining video is continuously downloaded, decoded and rendered. There has been tremendous demand for video viewing on the Internet and it's demand has increased demands on wireless networks due to ubiquitous coverage and mobile users demanding video anywhere. Unfortunately, the popularity of video streaming sometimes causes overloading of some bandwidth-limited networks, especially radio frequency (RF) wireless networks such as, for example, cellular telephone networks, WiFi networks, satellite networks, and the like.
The underlying network protocol used for video streaming could be TCP or UDP over IP networks. In recent years the network transfer protocol used for delivery of Internet traffic over all types of networks, including RF wireless networks, is the Transmission Control Protocol (TCP), used in conjunction with the Internet Protocol (IP) and often jointly referred to as TCP/IP. TCP provides reliable, ordered, error-free delivery of a stream of bytes from a program on one computer to a program on another computer. The bytes being transferred are typically organized into packets and routed using IP protocol. The TCP protocol has mechanisms for packet flow control, retransmission in case of packet loss, segment size, amount of data in pipeline, network congestion avoidance, and session control, e.g., establishment and termination.
Due to network congestion, traffic load balancing, switch memory overflow, physical link layer loss or other unpredictable network behavior, IP packets can be lost, duplicated, or delivered out of order at the receiving client. TCP detects data packet loss/delay problems, requests retransmission of lost packets, and rearranges out-of-order packets. TCP also tries to reduce network congestion to reduce the occurrence of the other problems by packet flow control. Once the TCP receiver at the client machine, which is part of operating system kernel, has finally reassembled a perfect copy of the data originally transmitted into a datagram, it passes that datagram to the application program of the client machine.
TCP is optimized for accurate delivery rather than timely delivery, and therefore, TCP sometimes incurs relatively long delays (on the order of seconds) while waiting for out-of-order messages or retransmissions of lost messages. Delays in reception of packets could underflow the video player resulting in stalled playback. Packets comprise collections of bytes of data, and may comprise multiples of MTUs.
Wireless links, however, are known to experience sporadic and usually temporary losses due to fading, shadowing, hand-off, and other radio effects, that cannot be considered congestion. After the (erroneous) back-off of the congestion window size, due to wireless packet loss, TCP can enter a congestion avoidance phase with a conservative decrease in window size. This congestion avoidance phase can cause the radio link to be underutilized, causing reduced throughput.
Progressive download results in an aggressive (as fast as possible) download of video from the HTTP server over the network. This is another source of inefficient use of network when a user selects a video for download, watches a short portion of the video, and then stops watching the video. Since the progressive download transmits the video stream as quickly as possible, unviewed packets may be transmitted over the network and accumulated at the user machine, only to be discarded after the user stops watching the video. This wastes valuable network bandwidth and resources.
HTTP Progressive download using TCP is the predominant use case over the internet because of pervasive support of this video delivery being supported by Adobe Flash™, Microsoft Silverlight™ player, and Apple Quicktime™ players on PC and devices.